#define _CRT_SECURE_NO_WARNINGS 1

#include <string.h>
#include <stdio.h>
#include <ctype.h>
//int main()
//{
//	char str[20] = { 0 };
//	gets(str);
//	char* begun = &str;
//	while (*begun)
//	{
//		if (!isalpha(*begun))
//		{
//			*begun++ = ' ';	
//		}
//	}
//	printf("%s", str);
//	return 0;
//}

//#include <stddef.h>
//struct S1
//{
//	char c1;//1
//	int i;//4
//	char c2;//1
//};//12
//
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};//8
//
////offsetof
//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//
//int main()
//{
//	printf("%d\n", sizeof(struct S1));//12
//	printf("%d\n", sizeof(struct S2));//8
//	printf("%d\n", sizeof(struct S3));//16
//	printf("%d\n", sizeof(struct S4));//32
//
//	printf("%d\n", offsetof(struct S1, c1));
//	printf("%d\n", offsetof(struct S1, i));
//	printf("%d\n", offsetof(struct S1, c2));
//
//	return 0;
//}

//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//int main()
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//	return 0;
//}

//union Un
//{
//	char c;//1
//	int i;//4
//};
//
//int main()
//{
//	union Un u = {0};
//	u.c = 'w';
//	u.i = 0x11223344;
//	printf("%d\n", sizeof(u));
//	printf("%p\n", &u);
//	printf("%p\n", &(u.c));
//	printf("%p\n", &(u.i));
//
//	return 0;
//}

union Un1
{
	char c[5];//5
	int i;//4
};//8
union Un2
{
	short c[7];//14
	int i;//4
};//16

int main()
{
	printf("%d\n", sizeof(union Un1));
	printf("%d\n", sizeof(union Un2));
	return 0;
}